/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 杨已萱
 * Date: 2023-04-06
 * Time: 12:02
 */
public abstract class TestRunTime2 {
    final static String str ="programming everyday";//要拼接的字段
    abstract void run();
    public void test(){
        long startTime = System.nanoTime();//计算拼接时间
        for (int i = 0; i < 10000; i++) {
            run();
        }
        long endTime = System.nanoTime();
        System.out.println("运行时间为："+(endTime-startTime));

    }
    public static void main(String[] args) {
//        new TestString().test();
        TestString st = new TestString();//时间最长（需要新建许多临时对象）
        st.test();
        new TestStringBuffer().test();//直接new完了通过点号访问父类方法
        new TestStringBuilder().test();//为什么子类都要变成静态的？(方法2）


        TestRunTime2 ts = new TestString();//向上转型（方法1 首选）
        TestRunTime2 ts2 = new TestStringBuffer();//向上转型
        TestRunTime2 ts3 = new TestStringBuilder();//向上转型
        ts.test();
        ts2.test();
        ts3.test();
//        多态的实现条件有三点：继承关系 重写方法 向上转型！
    }
 static class TestString extends TestRunTime2{
        String s;
     @Override
     void run() {
         s += str;//String拼接用＋
     }
 }
 static class TestStringBuffer extends TestRunTime2{
        StringBuffer sb = new StringBuffer();
     @Override
     void run() {
         sb.append(str);
     }
 }
 static class TestStringBuilder extends TestRunTime2{
        StringBuilder sb2 =new StringBuilder();
     @Override
     void run() {
         sb2.append(str);
     }
 }

}

